using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using PMServiceDesk.BusinessLogic;
using PMServiceDesk.DataType;
using PMServiceDesk.Utils.Interfaz;
using PMServiceDesk.Parameters.Constantes;

namespace PMServiceDesk.Web.AppCode
{
    public class ActividadView
    {
        public List<ActividadType> Actividads { get; set; }
        public int TotalRegistros { get; set; }
        public ActividadType Actividad { get; set; }
        public bool NuevoRegistro { get; set; }
        public List<GridJSONDataSource> GridJSONDataSources { get; set; }
        public string PorcentajeAvance { get; set; }
    }

    public class ActividadIU
    {
        public static ActividadView Listar(ActividadType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy,bool primerCarga)
        {
            ActividadLogic logic = new ActividadLogic();

            ActividadView view = new ActividadView();

            view.Actividads = logic.CargarExploradorPaginado(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
            view.TotalRegistros = view.Actividads.Capacity;

            view.GridJSONDataSources = new List<GridJSONDataSource>();

            if (!primerCarga) return view;

            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "UsuarioResponsableId", DataSource = SoporteLogic.UsuariosPorProyecto(Sesion.Usuario.ProyectoId) });
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "EstadoPaqueteTrabajoId", DataSource = SoporteLogic.EstadosPorPaqueteTrabajo(registroBusqueda.PaqueteTrabajoId) });

            return view;
        }

        public static string ExportarExcel(ActividadType registroBusqueda, List<GridJSONField> gridFields)
        {
            ActividadLogic logic = new ActividadLogic();

            List<ActividadType> l = logic.CargarExploradorPaginado(registroBusqueda);

            return InterfazUtils.FileTableHTMLGridJSON(l, gridFields, ArchivoConfig.FileServer, Sesion.Usuario.Usuario, "Actividads", ExtensionesArchivos.Excel2003);
        }

        public static ActividadView Cargar(string id,string paqueteTrabajoId)
        {
            ActividadView view = new ActividadView();

            view.GridJSONDataSources = new List<GridJSONDataSource>();
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "UsuarioResponsableId", DataSource = SoporteLogic.UsuariosPorProyecto(Sesion.Usuario.ProyectoId) });
            view.GridJSONDataSources.Add(new GridJSONDataSource { DataFieldEdit = "EstadoPaqueteTrabajoId", DataSource = SoporteLogic.EstadosPorPaqueteTrabajo(paqueteTrabajoId) });

            if (id == null) return view;

            ActividadLogic logic = new ActividadLogic();

            view.Actividad = logic.CargarPorId(id);

            return view;
        }

        public static ActividadView Grabar(ActividadType registro)
        {
            ActividadView view = new ActividadView();
            view.NuevoRegistro = (registro.Id == "0");

            registro.UsuarioRegistroId = Sesion.Usuario.Id;

            ActividadLogic logic = new ActividadLogic();
            logic.Grabar(registro);

            view.Actividad = logic.CargarVistaPorId(registro.Id);
            view.PorcentajeAvance = SoporteLogic.PorcentajeAvancePaqueteTrabajo(registro.PaqueteTrabajoId);

            return view;
        }

        public static string Eliminar(string id)
        {
            ActividadLogic logic = new ActividadLogic();
            logic.Eliminar(id);

            return id;
        }
    }
}
